package cn.shujuhai.cms.domain;

import cn.shujuhai.common.domain.BaseDomain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @Author: zhangDeZhong
 * @Date: 2024/12/5 12:01
 * @Description: sys_channel栏目表的实体类
 **/
@TableName(value = "sys_channel")
@Data
@EqualsAndHashCode(callSuper = true)
public class SysChannel extends BaseDomain {
    /**
     * 栏目ID
     */
    @TableId(type = IdType.AUTO)
    private Long channelId;

    /**
     * 栏目名称
     */
    @NotNull(message = "栏目名称不能为空")
    @Size(max = 100, message = "栏目名称长度不能超过100个字符")
    @Pattern(regexp = "^[a-zA-Z\\u4e00-\\u9fa5][a-zA-Z0-9\\u4e00-\\u9fa5\\s]*$", message = "栏目名称不能包含特殊字符")
    private String channelName;

    /**
     * 栏目排序
     */
    @NotNull(message = "栏目排序不能为空")
    private Long channelSort;

    /**
     * 父级菜单
     */
    private Long parentId;

    /**
     * 栏目路径
     */
    @NotNull(message = "栏目路径不能为空")
    @Size(max = 50, message = "栏目路径长度不能超过50个字符")
    @Pattern(regexp = "^[a-zA-Z0-9]+$", message = "栏目路径只能包含字母和数字")
    private String urlKey;

    /**
     * 栏目浏览量
     */
    private Long count;

    /**
     * 模版类型
     */
    @NotNull(message = "模版类型不能为空")
    private Long templateId;

    /**
     * 详细页模板
     */
    private Long detailTemplate;

    /**
     * 栏目类型
     */
    private Integer kind;

    /**
     * 是否审核（1：需要审核，2：不需要审核）
     */
    private Integer isChecked;
    /**
     * 栏目结构Id
     */
    private Long structId;

    /**
     * 模板类型
     */
    @TableField(exist = false)
    private Long type;

    /**
     * 父栏目名称
     */
    @TableField(exist = false)
    private String parentName;

    /**
     * 模板名称
     */
    @TableField(exist = false)
    private String templateName;

    /**
     * 模板类型代码
     */
    @TableField(exist = false)
    private String code;

}
